Quirks, Caveats, and Gotchas In SQLite
Quirks, Caveats, and Gotchas In SQLite
SQLiteは「弱い型付け」で、それ以外は「強い型付け」という説明は不正確で、軽蔑的
SQLiteは柔軟(flexible)な型付けで、他のSQLデータベースエンジンは、厳格(rigid)な型付けと言ったほうが好み
SQLiteでは、宣言された列の型に関係なく、ユーザーは任意のデータ型の任意の値を任意の列に格納できる。
VARCHAR(50)で宣言したコラム
2000文字のデータを突っ込んでも、データが損失することもエラーも吐くこともない。
可能な際は、SQLiteは予め宣言されたコラムの型をレコード挿入時に型を強制することを試みる
整数型のカラムに文字列型の1234を挿入すると、整数型の表現に変換
これは変換できる
しかし、wxyzは整数型に変換できないため、そのまま文字列型で保存する
情報が損なわれないことが強み
他のデータベースエンジンのような厳格(rigid)な型付けを強制できる
キーワードFALSE、TRUEはそれぞれ0,1にキャストされる。
ビルトインのdate()関数は以下のうちどれでも理解してくれるため、どれを使うかはアプリケーションに委ねられる
歴史的経緯で今後も修正されないバグ
例外
もともとROWIDのエイリアスなので、NULLをINTEGER PRIMARY KEYに挿入しようとすると自動的に一意な整数に変換される これらもPRIMARY KEYのNULLを許可しないため、例外。